package dev.common.service.base;

import dev.common.mapper.entity.Condition;
import dev.common.mapper.entity.Example;

import java.util.List;

/**
 * @program: JoyDev
 * @description: 条件查询接口
 * @author: MR.C
 * @create: 2018-02-07 15:50
 **/
public interface ConditionAndSortService<T> {

    /** 
    * @Description: 根据Example条件进行查询
    * @Param: [dev.common.mapper.entity.Example] example
    * @return: java.util.List<T> 
    * @Author: Mr.Chen
    * @Date: 2018/2/7 下午3:51
    */ 
    List<T> findByExample(Example example);

    /** 
    * @Description: 根据Example条件进行查询总数
    * @Param: [dev.common.mapper.entity.Example] example
    * @return: int 
    * @Author: Mr.Chen
    * @Date: 2018/2/7 下午3:52
    */ 
    int findCountByExample(Example example);

    /** 
    * @Description: 根据Example条件更新实体record包含的全部属性，null值会被更新
    * @Param: [record, dev.common.mapper.entity.Example]
    * @return: int 
    * @Author: Mr.Chen
    * @Date: 2018/2/7 下午3:53
    */ 
    int updateByExample(T record, Example example);

    /** 
    * @Description: 根据Example条件更新实体record包含的不是null的属性值
    * @Param: [record, dev.common.mapper.entity.Example]
    * @return: int 
    * @Author: Mr.Chen
    * @Date: 2018/2/7 下午3:54
    */ 
    int updateByExampleSelective(T record, Example example);

    /** 
    * @Description: 根据Example条件删除数据
    * @Param: [dev.common.mapper.entity.Example] example
    * @return: int 
    * @Author: Mr.Chen
    * @Date: 2018/2/7 下午3:55
    */ 
    int deleteByExample(Example example);

}
